<html>
<script>
    function memorize(f) {
        var cache = {};
        return function() {
            // 将实参转换为字符串形式，并将其作为缓存的键
            console.log(arguments);
            var key = arguments.length + Array.prototype.join.call(arguments, ",");
            console.log(key)
            if(key in cache){ return cache[key]}
            else return cache[key] = f.apply(this,arguments);
        }
    }

    // 返回两个整数的最大公约数
    function gcd(a,b) {
        var t;
        if(a < b) {t=b, b=a, a=t;}
        while(b != 0) {
            return a;
        } 
    }



    // 我们更希望调用实现了记忆功能的递归函数，而不是需要实现记忆功能
    var factorial = memorize(function(n){
        return (n <= 1) ? 1 : n*factorial(n-1)
    });
    console.log(factorial);
    console.log(factorial(5));
    


</script>


<head>
    <title>放置文章标题</title>
</head>

<body>

</body>

</html>